package com.javaclimb.accounting.service;


import com.javaclimb.accounting.po.User;

import java.math.BigDecimal;


/**
 * @author xiaoming
 * @version jdk1.8
 * @date 2022/12/27 12:33
 * @function:
 */
public interface TradeService {

    /**
     * 根据用户名查询是否设置支付密码
     */
    boolean getUserPay(String userName);

    /**
     * 根据用户名查询支付密码
     */
    String getPay(String userName);
    /**
     *设置支付密码
     */
    boolean insertPayPass(String userPay, String userName);

    /**
     * 修改支付密码
     */
    int updateUserPay(String userName, String userPay);

    /**
     *验证支付密码是否正确
     */
    boolean verifyUserPay(String userName, String userPay);

    /**
     * 提现扣减电子账户金额
     * @param money 提现金额
     * @param userAccId 电子账户Id
     * @param accTemp 电子账户余额
     */
    void withdrawal(BigDecimal money, Long userAccId, BigDecimal accTemp) throws Exception;

    /**
     *
     * 根据电子账户accId查询电子账户余额
     * @param accId 电子账户id
     */
    BigDecimal getAccTempById(Long accId);

    /**
     * 根据银行卡号查询银行卡余额
     * @param cardNumber 银行卡号
     * @return
     */
    BigDecimal getCardMoney(String cardNumber);

    /**
     * 提现增加银行卡金额
     * @param money 提现金额
     * @param cardNumber 银行卡号
     * @param cardMoney 银行卡余额
     */
    void withdrawalCard(BigDecimal money, String cardNumber, BigDecimal cardMoney) throws Exception;

    /**
     * 提现接口
     * @param money 提现金额
     * @param user user对象
     * @param cardNumber 银行卡号
     * @param tempNow 银行卡余额
     * @return
     */
    boolean drawal(BigDecimal money, User user, String cardNumber, BigDecimal tempNow) throws Exception;

    /**
     * 提现后在trade表中添加记录
     * @param onCardId 银行卡id
     * @param onAccId 电子账户id
     * @param onMoney  交易金额
     * @param onBalance 账户余额
     * @return
     */
    void addTradeDrawal(Long onCardId, Long onAccId, BigDecimal onMoney, BigDecimal onBalance) throws Exception;
    /**
     *充值  ysy
     */

    //验证是否成功充值
    int isDeposit(Long userAccId, String cardNumber, BigDecimal onMoney);

    int addTrade(Long onCardId, Long onAccId, BigDecimal onMoney, BigDecimal onBalance) throws  Exception;
}
